﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Sinacor.Infra.Common;
using Parameter = Sinacor.UI.Bovespa.Ordens.Model.Parameter;
using Sinacor.Infra.UI.Common;
using Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Negocio;
using System.ComponentModel;


namespace Sinacor.UI.Bovespa.Ordens.Communication.Translator
{
   public class  TranslatorNegocioResponse:
          BaseTranslator<Model.Negocio,
           NegocioResponse,
           ModelCollection<Model.Negocio>,
           List<NegocioResponse>>

         {
           public override Model.Negocio  Translate( NegocioResponse  from)
                {
                        Model.Negocio to = new Model.Negocio();
                        to.NumeroNegocio = from.NumeroNegocio;
                        to.DigitoNegocio = from.DigitoNegocio;
                        TranslatorEnumTipoMercado tipoMercado = new TranslatorEnumTipoMercado();
                        Model.Enum.TipoMercado tipoMercadoEnum;
                        tipoMercado.TranslateEnum(from.TipoMercado, out tipoMercadoEnum);
                        to.TipoMercado = tipoMercadoEnum;
                        TranslatatorTitulo tituloTranslator = new TranslatatorTitulo();
                        to.Titulo = tituloTranslator.Translate(from.Titulo);
                        to.DataNegocio = from.DataNegocio;
                        to.DataPregao = from.DataPregao;
                        to.DataMovimento = from.DataMovimento;
                        to.Bolsa = from.Bolsa;
                        to.PrazoTermo = from.PrazoTermo;
                        to.VencimentoOpcoesTermo = from.VencimentoOpcoesTermo;
                        to.HoraNegocio = from.HoraNegocio;
                        TranslatorEnumTipoNaturezaOeracao tipoNaturezaOperacao = new TranslatorEnumTipoNaturezaOeracao();
                        Model.Enum.TipoNaturezaOperacao? tipoNaturezaOperacaoEnum;
                        tipoNaturezaOperacao.TranslateEnum(from.TipoNaturezaOperacao, out tipoNaturezaOperacaoEnum);
                        to.TipoNaturezaOperacao = tipoNaturezaOperacaoEnum;
                        to.ContraParte = from.ContraParte;
                        TranslatorEnumTipoTermo tipoTermo = new TranslatorEnumTipoTermo();
                       Model.Enum.TipoTermo? tipoTermoEnum = to.TipoTermo;
                        tipoTermo.TranslateEnum(from.TipoTermo, out tipoTermoEnum);
                        to.TipoTermo = tipoTermoEnum;
                        to.TituloObjeto = from.TituloObjeto;
                        TranslatorEnumTipoOrigemNegocio tipoOrigemNegocio = new TranslatorEnumTipoOrigemNegocio();
                        Model.Enum.TipoOrigemNegocio? tipoOrigemNegocioEnum;
                        tipoOrigemNegocio.TranslateEnum(from.TipoOrigem, out tipoOrigemNegocioEnum);
                        to.TipoOrigem = tipoOrigemNegocioEnum;
                        to.Quantidade = from.Quantidade;
                        to.QuantidadeCasada = from.QuantidadeCasada;
                        to.Saldo = from.Saldo;
                        to.Preco = from.Preco;
                        to.Cliente = from.Cliente;
                        TranslatorEnumTipoLiquidacaoNegocio tipoLiquidacaoNegocio = new TranslatorEnumTipoLiquidacaoNegocio();
                        Model.Enum.TipoLiquidacaoNegocio? tipoLiquidacaoNegocioEnum;
                        tipoLiquidacaoNegocio.TranslateEnum(from.TipoLiquidacao, out tipoLiquidacaoNegocioEnum);
                        to.TipoLiquidacao = tipoLiquidacaoNegocioEnum;
                        to.PontaGeradoraOferta = from.PontaGeradoraOferta;
                        to.NaoLiquidaNota = from.NaoLiquidaNota;
                        to.NegociadoAfterMarket = from.NegociadoAfterMarket;
                        to.Observacao = from.Observacao;
                        TranslatorEnumTipoEstrategia tipoEstrategia = new TranslatorEnumTipoEstrategia();
                        Model.Enum.TipoEstrategia? tipoEstrategiaEnum;
                        tipoEstrategia.TranslateEnum(from.Estrategia, out tipoEstrategiaEnum);
                        to.TipoEstrategia = tipoEstrategiaEnum;
                        TranslatorEnumTipoOfertaBovespaFix tipoOfertaBovespaFix = new TranslatorEnumTipoOfertaBovespaFix();
                        Model.Enum.TipoOfertaBovespaFix? tipoOfertaBovespaFixEnum;
                        tipoOfertaBovespaFix.TranslateEnum(from.TipoOfertaBovespaFix, out tipoOfertaBovespaFixEnum);
                        to.TipoOfertaBovespaFix = tipoOfertaBovespaFixEnum;
                        to.CodigoCorrespondente = from.CodigoCorrespondente;
                        to.PercentualCorrespondente = from.PercentualCorrespondente;
                        to.DiasLiquidacao = from.DiasLiquidacao;
                        to.Operador = from.Operador;
                        to.FatorValorizacao = from.FatorValorizacao;
                        TranslatorEnumTipoCasamento tipoCasamento = new TranslatorEnumTipoCasamento();
                         Model.Enum.TipoCasamento? tipoCasamentoEnum;
                        tipoCasamento.TranslateEnum(from.TipoCasamento, out tipoCasamentoEnum);
                        to.TipoCasamento = tipoCasamentoEnum;
                        TranslatorEnumTipoSituacaoCasamento tipoSituacaoCasamento = new TranslatorEnumTipoSituacaoCasamento();
                        Model.Enum.TipoSituacaoCasamento? tipoSituacaoCasamentoEnum = to.TipoSituacaoCasamento;
                        tipoSituacaoCasamento.TranslateEnum(from.TipoSituacao, out tipoSituacaoCasamentoEnum);
                        to.TipoSituacaoCasamento = tipoSituacaoCasamentoEnum;
                        to.CodigoTitulo = from.CodigoTitulo;
                        return to;
                }
         }
    }

